package org.example.service.user;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.example.controller.common.permission.PermissionObject;
import org.example.model.common.PageResponseDto;
import org.example.model.common.ResponseResult;
import org.example.model.user.dtos.PermissionDto;
import org.example.model.user.dtos.RoleInfoDto;
import org.example.model.user.entities.RoleInfo;
import org.example.model.user.vos.AddRoleInfoVo;
import org.example.model.user.vos.SearchRoleInfoVo;

import java.util.List;

/**
 * 角色信息服务层接口
 */
public interface RoleInfoService extends IService<RoleInfo> {

    /**
     * 添加一条角色信息
     */
    ResponseResult<Boolean> InsertRoleInfo(AddRoleInfoVo addRoleInfoVo) throws ClassNotFoundException, IllegalAccessException;

    /**
     * 根据id修改一条角色信息
     */
    ResponseResult<Boolean> UpdateRoleInfoById(AddRoleInfoVo addRoleInfoVo);

    /**
     * 分页根据条件（角色名，角色状态）获取角色信息列表
     */
    ResponseResult<PageResponseDto<List<RoleInfoDto>>> SelectRoleInfoByConditions (SearchRoleInfoVo searchRoleInfoVo);

    /**
     * 根据id删除一条角色信息
     */
    ResponseResult<Boolean> DeleteRoleInfoById(int id);

    /**
     * 根据id获取当前角色的权限列表
     */
    ResponseResult<PermissionDto> GetPermissionListById(int id) throws JsonProcessingException, ClassNotFoundException, IllegalAccessException;

    /**
     * 根据id修改当前角色的权限列表
     */
    ResponseResult<Boolean> UpdatePermissionListById(PermissionDto permissionDto);
}
